package com.tensquare.friend.service;

import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import jdk.nashorn.internal.runtime.FindProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
public class FriendService {
    @Autowired
    private FriendDao friendDao;
    @Autowired
    private NoFriendDao noFriendDao;
    @Autowired
    private UserClient userClient;

    @Transactional
    public void deleteFriend(String userid,String friendid){
           friendDao.deleteFriend(userid,friendid);
           friendDao.updateLike(userid,friendid,"0");
           addNoFriend(userid,friendid);//向不喜欢的列表中添加一条数据
            userClient.incfollowcount(userid,-1);//减少自己的关注数
            userClient.incFanscount(friendid,-1);//减少对方的粉丝数
    }

    /**
     * 向不喜欢列表添加记录
     * @param userid
     * @param friendid
     */
    public void addNoFriend(String userid,String friendid){
        NoFriend noFriend = new NoFriend();
        noFriend.setUserid(userid);
        noFriend.setFriendid(friendid);
        noFriendDao.save(noFriend);
        userClient.incFanscount(friendid,1);//增加对方的关注数
        userClient.incfollowcount(userid,1);//增加自己的粉丝数
    }

    /**
     * 添加好友
     * @param userid
     * @param friendid
     * @return
     */
    @Transactional
    public int addFriend(String userid,String friendid){
        //判断如果用户已经添加了这个好友，则不进行任何操作，返回0
        if(friendDao.selectCount(userid,friendid)>0){
            return 0;
        }
        //向喜欢表中添加记录
        Friend friend = new Friend();
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        friendDao.save(friend);

        //判断对方是否喜欢你，如果喜欢，将islike设置为1；
        if(friendDao.selectCount(userid,friendid)>0){
            friendDao.updateLike(userid,friendid,"1");
            friendDao.updateLike(friendid,userid,"1");
        }
        return 1;
    }
}
